'use strict';
/**
 * author：小小游 --- allen
 * date：2018.02.07
 * lastUpdateDate：2018.02.07
 * description：箭头函数的基本使用、优缺点
 */
/**
 * 使用箭头函数需要注意事项，如下所示：
 * 1.this指向问题
 * 2.arguments形参不能用了
 * 3.参数有且仅有一个的时候默认可以不写圆括号，如果执行代码块只有一条语句，
 * 那么可以省略大括号，类似这样var fn = n => n * 3;，这时候大家可能会
 * 问了，那结果怎么return呢，箭头函数帮你return了。但是注意，如果以下代
 * 码就是错的，如下：
 * var fn = n => {
 *     n * 3;
 * } // 错误的写法，它会给你返回undefined
 * 言外之意就是说如果写了大括号，执行代码块里面的语句就必须加上return，
 * 不然会报错，如下：
 * var fn = n => {
 *     return n * 3;
 * }; // 正确的写法，它会给你返回正确的值
 */
/**
 * 定义函数的几种方式
 * 1.function test () {} ---> 声明一个函数
 * 2.var test1 = function () {}; ---> 把一个函数赋值给一个变量的声明方式
 * 3.var test2 = () => {}; ---> 箭头函数省略function，写法追求极致精简
 */
/**
 * 箭头函数的this是由当前环境的上下文来决定的
 * 普通函数的this就是当前的方法属于谁，谁就是this，当然抛开面向对象
 * 函数前面有new的情况例外，这个this是属于新创建出来的那个对象，这个
 * 不扯，我们继续
 */
var fn = n => {
    n * 10;
};
// result：undefined
console.log(fn(10));
fn = n => n * 10;
// result：100
console.log(fn(10));

fn = n => console.log(arguments[0]);

// 正常来说应该结果应该是10，但是在箭头函数里面确是取不到值的
// result：{}
fn ();
